Route53管理のDNSとZoneApexのリダイレクト設定をCloudflareに移設してみた
2019年よりクラスメソッドが保持している「developers.io」ドメイン。 これまでドメインレジストラ、DNSサーバは 共にAmazon Route53 を利用して、リダイレクト誘導用の環境を実現していました。
今回、このドメインを利用して Cloudflare を利用とするため、CloudFrontと S3の静的Webサイトホスティングで実現していたリダイレクトを Cloudflare の Page Rulesに移植。 Route53のホストゾーンで管理していたDNSレコードを Cloudflare DNSに 引き継ぐ切業を行う機会がありましたので、紹介させて頂きます。
概要図
変更前
変更後
事前作業
Route53 HostedZone
NSレコード設定
DNS設定の切り替え後、DNSキャッシュの保持時間を抑制するため、 「developers.io.」のNSレコード、TTLをデフォルトの172800秒(2日)から 3600(1時間)に短縮しました。
ゾーン設定のエクスポート
Route53ダッシュボードはホストゾーンエクスポートをサポートしませんが、 DNS検証などのため多数存在したCNAMEレコードは「awscli」で取得、「jq」を利用してTSV形式に加工、Cloudflare DNSにインポート可能なデータを用意しました。
CNAMEレコード取得例
$ HosetdZoneId=`aws route53 list-hosted-zones | jq -r '.HostedZones[]|select(.Name == "developers.io.")|.Id'` $ aws route53 list-resource-record-sets --hosted-zone-id "${HosetdZoneId}" | jq '.ResourceRecordSets[]|select(.Type=="CNAME")' | jq -r "[.Name, \"3600\", \"IN\", .Type , .ResourceRecords[0].Value ]|@tsv" _XXXXXXXXXXXXXX.developers.io. 3600 IN CNAME _XXXXXXXXXXXXXX.acm-validations.aws. _XXXXXXXXXXXXXX.developers.io. 3600 IN CNAME _XXXXXXXXXXXXXX.acm-validations.aws.
Cloudflare DNS
Cloudflare 管理画面で「Add a site」、ドメイン登録を実施しました。
有償提供されるCloudflareの機能は直近必要としないため、Cloudflareのプランは「Free」を利用しました。
DNSレコード設定
Aレコード
Cloudflare DNSに自動反映されるレコード、リダイレクトに利用していた CloudFrontのIPアドレスを示す設定は削除。
Page Rulesを利用するため、
- Type: A
- Name: developers.io
- Content: 192.0.2.1
- Proxy Status: Proxied
としたレコードを設置しました。
CNAME
予めCLIで作成したファイルをインポートしました。
ページルール
リダイレクトを実現するページルールを作成しました。
- URL: developers.io/*
- 設定を選択する: URL の転送
- ステータス コードを選択する: 301
- 転送先 URL: https://dev.classmethod.jp/$1
従来環境(CloudFront+S3)では、以下のリダイレクトルールを利用していました。
[ { "Redirect": { "HostName": "dev.classmethod.jp", "HttpRedirectCode": "301", "Protocol": "https" } } ]
S3のリダイレクト機能を改めて整理してみた: リダイレクトルールを使った設定
切替当日作業
Route53
Route53 ダッシュボード、登録済みドメインの管理画面を利用して、ネームサーバ(DNSサーバ)を、Route53で提供されるものから、Cloudflare指定のものに変更しました。
Route53 ホストゾーンのNSレコード (developers.io.)の値も、Cloudflare指定のアドレスに変更しました。
動作確認
リダイレクト(301) 動作の確認を行いました。
$ curl https://developers.io/ -v * Connected to developers.io (172.67.222.189) port 443 (#0) > GET / HTTP/2 > Host: developers.io < HTTP/2 301 GET /articles/sunflower-furano-remotework/ HTTP/2 > Host: developers.io < HTTP/2 301 < location: https://dev.classmethod.jp/articles/sunflower-furano-remotework/
IPアドレスの保有者を whois コマンドで確認、Cloudflare である事を確認しました。
$ whois 172.67.222.189 NetRange: 172.64.0.0 - 172.71.255.255 CIDR: 172.64.0.0/13 NetName: CLOUDFLARENET NetHandle: NET-172-64-0-0-1 Parent: NET172 (NET-172-0-0-0-0) NetType: Direct Allocation OriginAS: AS13335 Organization: Cloudflare, Inc. (CLOUD14)
まとめ
DNSサーバと、ページルール設定を行う事で、従来のリダイレクトを維持したまま Cloudflare の利用を開始する事が出来ました。
ドメインの一元管理を優先するため、レジストラとしてはAWS(Route53)の利用を継続する予定ですが、 卸売価格でドメインを利用できる、Cloudflare Registrarを利用する事で、「IO」ドメインの維持費を1/2に抑制可能です。
IOドメイン1年間の登録料金比較(2023年9月時点)
- Cloudflare Registrar: 36ドル
- Route53 レジストラ: 71ドル
今後、Cloudflareの有償プランへの切替や、継続的な利用が確定した場合には、レジストラの変更についても改めて検討したいと思います。